package datalayer.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;

import model.Werknemer;
import datalayer.interfaces.IDAOWerknemer;
import datalayer.mysql.MysqlDBO;

public class DAOWerknemer extends MysqlDBO implements IDAOWerknemer{

	private static DAOWerknemer instance;
	public TreeSet<Werknemer> werknemerslijst = new TreeSet<Werknemer>();
	private Werknemer werknemer;
	
	private DAOWerknemer() {
		
		URL = "jdbc:mysql://localhost:3306/overview";
		User = "root";
		Password = "overview";
	}
	

	public static DAOWerknemer getInstance() {

		if (instance == null) {
			instance = new DAOWerknemer();

		}
		return instance;
	}
	
	@Override
	public TreeSet<Werknemer> loadAll() {
		String sql = "SELECT * FROM jumboo.werknemers";
		Werknemer w;
		TreeSet<Werknemer> werknemer = new TreeSet<Werknemer>();
		conn = openConnection();
		
		try{
			stmt = conn.createStatement();
			RS = stmt.executeQuery(sql);
			
			while (RS.next()){
				w = new Werknemer (RS.getInt(1), RS.getString(2), RS.getString(3), RS.getString(4), 
								   RS.getString(5), RS.getString(6), RS.getString(7));
				werknemer.add(w);
				System.out.println(RS.getString(2));
				}
			}
			catch (Exception e){
			System.out.println(e.getMessage());
			}	
		return werknemer;
		}


	@Override
	public boolean insert(Werknemer w) {
		
		String voornaam = w.getVoornaam();
		String tussenvoegsel = w.getTussenvoegsel();
		String achternaam = w.getAchternaam();
		String email = w.getEmail();
		String telefoonnummer = w.getTelefoonnummer();
		String functie = w.getFunctie();
		
		try {
			stmt = conn.createStatement();			
			String sql = "INSERT INTO jumboo.werknemers(voornaam, tussenvoegsel, achternaam, email, telefoonnummer, functie"
					+ ")values('"
					+ voornaam
					+ "','"
					+ tussenvoegsel
					+ "','"
					+ achternaam
					+ "','"
					+ email
					+ "','" 
					+ telefoonnummer
					+ "','"
					+ functie
					+ "')";
			
			System.out.println(sql);
			stmt.executeUpdate(sql);

		} catch (SQLException sqle) {
			sqle.printStackTrace();
			System.out.println("Could not execute query: Werknemer Toevoegen");
		}
		return false;
	}


	@Override
	public boolean delete(Werknemer w) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean update(Werknemer w) {
		Iterator<Werknemer> iter = werknemerslijst.iterator();
		
		if(iter.hasNext()){
			werknemerslijst.remove(w);
		}
		return werknemerslijst.add(w);
	}

	@Override
	public Werknemer load(Werknemer w) {
		ArrayList<Werknemer> temp = new ArrayList<Werknemer>(werknemerslijst);
		return temp.get(0);
	}

}
